﻿using System;
using System.Collections.ObjectModel;

using SBPweb.RIA.Shared.Contracts.Base;
using SBPweb.RIA.Shared.Contracts.Controllers;
using SBPweb.RIA.Shared.Contracts.Events;

using SBPweb.RIA.Client.Contracts.Base;
using SBPweb.RIA.Client.Contracts.Controllers;

using SBPweb.RIA.Client.Controls.Base;

using SBPweb.PROvibe.Client.Library.Base;
using SBPweb.PROvibe.Client.Library.Models;

using SBPweb.PROvibe.Shared.Library.Components;

namespace SBPweb.PROvibe.Client.Library.Controllers
{

    public interface IConfigurationController : IController<IConfigurationModel>
    {

        void GetCurrentSuite();

        void GetCurrentSuite(AsyncRequestHandler<ISuite> completed);

        void SetCurrentSuite(ISuite suite);

        void SetCurrentSuite(ISuite suite, AsyncRequestHandler<ISuite> completed);


        void EnumerateAllSuites();

        void EnumerateAllSuites(AsyncRequestHandler<ReadOnlyCollection<ISuite>> completed);

        void EnumerateAllModules();

        void EnumerateAllModules(AsyncRequestHandler<ReadOnlyCollection<IModule>> completed);

            
        void EnumerateModulesOfSuite();

        void EnumerateModulesOfSuite(AsyncRequestHandler<ReadOnlyCollection<IModule>> completed);

        void EnumerateModulesOfSuite(ISuite suite);

        void EnumerateModulesOfSuite(ISuite suite, AsyncRequestHandler<ReadOnlyCollection<IModule>> completed);

    }

}